home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / lib / rcscripts / net.modules.d / adsl next >
Text File  |  2006-04-25  |  3KB  |  124 lines

  1. # Copyright (c) 2004-2005 Gentoo Foundation
  2. # Distributed under the terms of the GNU General Public License v2
  3. # $Header$
  4.  
  5. # Contributed by Roy Marples (uberlord@gentoo.org)
  6.  
  7. # char* adsl_provides(void)
  8. #
  9. # Returns a string to change module definition for starting up
  10. adsl_provides() {
  11.     echo "adsl"
  12. }
  13.  
  14. # void adsl_depend(void)
  15. #
  16. # Sets up the dependancies for the module
  17. adsl_depend() {
  18.     after interface
  19.     before dhcp
  20. }
  21.  
  22. # bool adsl_check_installed(void)
  23. #
  24. # Returns 1 if rp-pppoe is installed, otherwise 0
  25. adsl_check_installed() {
  26.     [[ -x /usr/sbin/adsl-start || -x /usr/sbin/pppoe-start ]] && return 0
  27.     ${1:-false} && eerror "For ADSL support, emerge net-dialup/rp-pppoe"
  28.     return 1
  29. }
  30.  
  31. # bool adsl_check_depends(void)
  32. #
  33. # Checks to see if we have the needed functions
  34. adsl_check_depends() {
  35.     local f
  36.  
  37.     for f in interface_variable; do
  38.         [[ $( type -t ${f} ) == function ]] && continue
  39.         eerror "adsl: missing required function ${f}\n"
  40.         return 1
  41.     done
  42.  
  43.     return 0
  44. }
  45.  
  46. # bool adsl_setup_vars(char *iface)
  47. #
  48. # Checks to see if the ADSL script has been created or not
  49. adsl_setup_vars() {
  50.     local iface=${1} ifvar=$( interface_variable ${1} ) startstop=${2} cfgexe
  51.  
  52.     if [[ -x /usr/sbin/pppoe-start ]]; then
  53.         exe=/usr/sbin/pppoe-${startstop}
  54.         cfgexe=pppoe-setup
  55.     else
  56.         exe=/usr/sbin/adsl-${startstop}
  57.         cfgexe=adsl-setup
  58.     fi
  59.  
  60.     # Decide which configuration to use.  Hopefully there is an
  61.     # interface-specific one
  62.     cfgfile="/etc/ppp/pppoe-${iface}.conf"
  63.     [[ -f ${cfgfile} ]] || cfgfile="/etc/ppp/pppoe.conf"
  64.  
  65.     if [[ ! -f ${cfgfile} ]]; then
  66.         eerror "no pppoe.conf file found!"
  67.         eerror "Please run ${cfgexe} to create one"
  68.         return 1
  69.     fi
  70.  
  71.     # Might or might not be set in conf.d/net
  72.     eval user=\"\$\{adsl_user_${ifvar}\}\"
  73.     [[ -z ${user} ]] && eval user=\"\$\{user_${ifvar}\}\"
  74.  
  75.     return 0
  76. }
  77.  
  78. # bool adsl_start(char *iface)
  79. #
  80. # Start ADSL on an interface by calling adsl-start
  81. #
  82. # Returns 0 (true) when successful, non-zero otherwise
  83. adsl_start() {
  84.     local iface=${1} exe cfgfile user
  85.  
  86.     adsl_setup_vars ${iface} start || return 1
  87.  
  88.     # Start ADSL with the cfgfile, but override ETH and PIDFILE
  89.     einfo "Starting ADSL for ${iface}"
  90.     ${exe} <(cat "${cfgfile}"; \
  91.         echo "ETH=${iface}"; \
  92.         echo "PIDFILE=/var/run/rp-pppoe-${iface}.pid"; \
  93.         [[ -n ${user} ]] && echo "USER=${user}") \
  94.         >${devnull}
  95.     eend $?
  96. }
  97.  
  98. # bool adsl_stop(char *iface)
  99. #
  100. # Stop ADSL on an interface by calling adsl-stop
  101. #
  102. # Returns 0 (true) when there appears to be an ADSL interface to stop,
  103. # and we attempted to stop it.  This does not necessarily indicate
  104. # that adsl-stop was successful.  Returns non-zero when there was
  105. # nothing to stop.
  106. adsl_stop() {
  107.     local iface=${1} exe cfgfile user
  108.  
  109.     adsl_check_installed || return 1
  110.     [[ ! -f /var/run/rp-pppoe-${iface}.pid ]] && return 1
  111.  
  112.     adsl_setup_vars ${iface} stop || return 1
  113.  
  114.     einfo "Stopping ADSL for ${iface}"
  115.     ${exe} <(cat "${cfgfile}"; \
  116.         echo "ETH=${iface}"; \
  117.         echo "PIDFILE=/var/run/rp-pppoe-${iface}.pid"; \
  118.         [[ -n ${user} ]] && echo "USER=${user}") \
  119.         >${devnull}
  120.     eend $?
  121.  
  122.     return 0  # we did *attempt* to stop adsl
  123. }
  124.